//! 独立测试程序用于验证performance模块重构结果

use rustcloud::performance::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("开始测试performance模块重构结果...");
    
    // 测试连接池功能
    println!("1. 测试连接池功能...");
    test_connection_pool().await?;
    
    // 测试内存管理功能
    println!("2. 测试内存管理功能...");
    test_memory_manager().await?;
    
    // 测试异步任务池功能
    println!("3. 测试异步任务池功能...");
    test_async_task_pool().await?;
    
    // 测试配置功能
    println!("4. 测试配置功能...");
    test_config();
    
    println!("所有测试通过！performance模块重构成功。");
    Ok(())
}

async fn test_connection_pool() -> Result<(), Box<dyn std::error::Error>> {
    // 创建连接池配置
    let config = ConnectionPoolConfig::default();
    println!("   连接池配置: {:?}", config);
    
    // 验证配置
    assert!(config.validate().is_ok());
    println!("   配置验证通过");
    
    // 测试Duration助手方法
    assert_eq!(config.connection_timeout(), std::time::Duration::from_secs(30));
    assert_eq!(config.idle_timeout(), std::time::Duration::from_secs(300));
    println!("   Duration助手方法测试通过");
    
    Ok(())
}

async fn test_memory_manager() -> Result<(), Box<dyn std::error::Error>> {
    // 创建GC配置
    let gc_config = GcConfig::default();
    println!("   GC配置: {:?}", gc_config);
    
    // 验证GC配置
    assert!(gc_config.validate().is_ok());
    println!("   GC配置验证通过");
    
    // 测试Duration助手方法
    assert_eq!(gc_config.gc_interval(), std::time::Duration::from_secs(30));
    println!("   GC Duration助手方法测试通过");
    
    Ok(())
}

async fn test_async_task_pool() -> Result<(), Box<dyn std::error::Error>> {
    // 创建异步任务池配置
    let config = AsyncTaskPoolConfig::default();
    println!("   异步任务池配置: {:?}", config);
    
    // 验证配置
    assert!(config.validate().is_ok());
    println!("   异步任务池配置验证通过");
    
    Ok(())
}

fn test_config() {
    // 测试性能配置构建器
    let config = PerformanceConfigBuilder::new()
        .max_connections(200)
        .min_connections(20)
        .connection_timeout(60)
        .core_threads(8)
        .max_threads(16)
        .default_block_size(2048)
        .auto_gc_enabled(false)
        .async_worker_threads(8)
        .build()
        .expect("性能配置构建失败");
        
    assert_eq!(config.connection_pool.max_connections, 200);
    assert_eq!(config.connection_pool.min_connections, 20);
    assert_eq!(config.connection_pool.connection_timeout_seconds, 60);
    assert_eq!(config.thread_pool.core_threads, 8);
    assert_eq!(config.thread_pool.max_threads, 16);
    assert_eq!(config.memory.default_block_size, 2048);
    assert!(!config.memory.gc.auto_gc_enabled);
    assert_eq!(config.async_task_pool.worker_threads, 8);
    
    println!("   性能配置构建器测试通过");
}